/**
 * Notes: PLM项目对外API控制器
 * Date: 2025-05-01
 */

const CrossService = require('../service/cross_service.js');
const BaseController = require('./base_controller.js');

/**
 * PLM项目对外API控制器
 */
class CrossController extends BaseController {
  /**
   * 获取项目信息
   */
  async getProjectInfo() {
    // 获取请求参数
    const projectId = this.getParameter('projectId');

    // 调用服务
    const project = await CrossService.getProjectInfo(projectId);

    // 返回结果
    return this.success(project);
  }

  /**
   * 获取项目列表
   */
  async getProjectList() {
    // 获取分页参数
    const page = this.getParameter('page', 1);
    const size = this.getParameter('size', 20);
    const status = this.getParameter('status');
    const search = this.getParameter('search');

    // 调用服务
    const result = await CrossService.getProjectList({
      page,
      size,
      status,
      search
    });

    // 返回结果
    return this.success(result);
  }

  /**
   * 获取研发项目信息
   */
  async getResearchProjectInfo() {
    // 获取请求参数
    const researchId = this.getParameter('researchId');

    // 调用服务
    const research = await CrossService.getResearchProjectInfo(researchId);

    // 返回结果
    return this.success(research);
  }

  /**
   * 获取研发项目列表
   */
  async getResearchProjectList() {
    // 获取分页参数
    const page = this.getParameter('page', 1);
    const size = this.getParameter('size', 20);
    const status = this.getParameter('status');
    const search = this.getParameter('search');

    // 调用服务
    const result = await CrossService.getResearchProjectList({
      page,
      size,
      status,
      search
    });

    // 返回结果
    return this.success(result);
  }

  /**
   * 获取任务信息
   */
  async getTaskInfo() {
    // 获取请求参数
    const taskId = this.getParameter('taskId');

    // 调用服务
    const task = await CrossService.getTaskInfo(taskId);

    // 返回结果
    return this.success(task);
  }

  /**
   * 获取任务列表
   */
  async getTaskList() {
    // 获取分页参数
    const page = this.getParameter('page', 1);
    const size = this.getParameter('size', 20);
    const projectId = this.getParameter('projectId');
    const assignee = this.getParameter('assignee');
    const status = this.getParameter('status');

    // 调用服务
    const result = await CrossService.getTaskList({
      page,
      size,
      projectId,
      assignee,
      status
    });

    // 返回结果
    return this.success(result);
  }

  /**
   * 更新项目关联的审批ID
   */
  async updateProjectApproval() {
    // 获取请求参数
    const projectId = this.getParameter('projectId');
    const approvalId = this.getParameter('approvalId');

    // 参数检查
    if (!projectId) {
      return this.error('项目ID不能为空');
    }
    if (!approvalId) {
      return this.error('审批ID不能为空');
    }

    // 调用服务
    const result = await CrossService.updateProjectApproval(projectId, approvalId);

    // 返回结果
    return this.success(result);
  }

  /**
   * 健康检查接口
   */
  async healthCheck() {
    // 返回健康状态
    return this.success({
      status: 'ok',
      service: 'PLM Cross Service',
      timestamp: new Date().toISOString()
    });
  }
}

module.exports = CrossController; 